package cn.tedu.mall.book.mapper;

import cn.tedu.mall.book.entity.Product;
import cn.tedu.mall.book.pojo.dto.ProductUpdateDTO;
import cn.tedu.mall.book.pojo.vo.ProductSimpleVO;
import cn.tedu.mall.book.pojo.vo.ProductDetailVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 *
 * 后台有关商品的功能的实现
 * @author zxjun
 * @date 2022/6/8 19:15
 */
@Repository
public interface ProductMapper {
    /**
     * 后台新增商品
     * @param product
     */
    void insert(Product product);

    /**
     * 后台修改商品价格和库存
     * @param productUpdate
     */
    void updateById(ProductUpdateDTO productUpdate);

    /**
     * 后台根据id删除商品
     * @param id
     */
    void deleteById(Long id);

    /**
     * 后台分页查询
     */

    List<ProductSimpleVO> getList();

    /**
     * 后台根据id查询商品详细信息
     * @param id
     * @return
     */
    ProductDetailVO getById(Long id);



    /**
     * 后台进行的新书首发
     * @return
     */
    List<ProductSimpleVO> getBookForNewStart();

    /**
     * 后台进行的精品推荐
     * @return
     */
    List<ProductSimpleVO> getBookForRecommend();

    /**
     * 后台根据子级分类id查询所有商品
     * @param categoryId
     * @return
     */
    List<ProductSimpleVO> getProductsByCategoryChildrenId(Integer categoryId);

    /**
     * 后台根据关键词查询所有商品
     * @param keyWord
     * @return
     */
    List<ProductSimpleVO> getProductsBySearch(String keyWord);

    /**
     * 后台新书榜
     * @return
     */
    List<ProductSimpleVO> getBookForNewBookTop();

    /**
     * 后台畅销榜
     * @return
     */
    List<ProductSimpleVO> getBookForBestSellerTop();

    ProductSimpleVO selectProductByName(String name);
}
